生成式對抗網路 (GAN) 是一種深度學習架構,由 Ian Goodfellow 在 2014 年提出。它的核心想法是讓兩個神經網路 互相對抗,透過這種「競爭合作」的方式,學會產生幾乎可以以假亂真的資料(例如圖片、聲音或文字)。
—————————————————————————————————————————
GAN 的兩個角色
1. 生成器(Generator, G)
• 就像一個「偽造者」
• 它的目標是 從隨機雜訊中生成逼真的資料,讓人(或電腦)分不出真假。
• 例如:給它一堆亂數,它就能生出一張「看起來像真的人臉」的圖片。
2. 判別器(Discriminator, D)
• 就像一個「檢查員」
• 它的工作是 判斷輸入的資料是真的(來自真實世界)還是假的(生成器產的)。
• 例如:它要分辨「這張人臉是拍攝的照片,還是 G 編出來的」。
G與D 會產生較新的改進版假資料值,直至預測網路無法再區分虛假資料與原始資料。
—————————————————————————————————————————
以下為生成器及判別器的運作原理:
GAN 由兩個神經網路組成:
• 生成器 (Generator, G):將隨機噪聲 z \sim p_z(z) 轉換成類似真實資料的輸出 G(z)。
• 判別器 (Discriminator, D):輸入資料 x,輸出一個機率值 D(x),代表「此資料是真實的」的可能性。
他們的目標是透過 對抗訓練 (Adversarial Training) 達到 minimax 遊戲:
\min_G \max_D V(D, G) = \mathbb{E}{x \sim p{data}(x)} [\log D(x)] + \mathbb{E}_{z \sim p_z(z)} [\log (1 - D(G(z)))]
運作流程
運作本質
GAN 的核心就是一種 分布匹配:
• 真實資料服從分布 p_{data}(x)。
• 生成器產生的資料服從分布 p_g(x)。
• 對抗訓練的目標是讓 p_g \approx p_{data}。
數學上,可以證明 GAN 等價於 最小化 Jensen–Shannon 散度 (JSD),即:
\min_G \max_D V(D, G) \approx \min_G JS(p_{data} || p_g)